package exceptiondemo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ExceptionDemo1 {
    public static void main(String[] args) {
       // 目标：认识异常的体系，搞清楚异常的基本作用
        //int[] arr = {1,2,3};
        //printArray(arr);
        //show();
        try {
            // 监视代码，出现异常，会被catch拦截住这个异常
            show2();
        } catch (ParseException e) {
            e.printStackTrace(); // 打印异常信息
        }
    }

    // 定义一个方法认识编译时异常
    public static void show2() throws ParseException {//或者 throws Exception
        System.out.println("程序开始运行。。。");
        String str = "2025-3-22 13:09";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Date date = sdf.parse(str); // ParseException 编译时异常，必须处理，否则编译不通过
        System.out.println(date);
    }

    // 定义一个方法认识运行时异常
    public static void printArray(int[] arr) {
        System.out.println("程序开始运行。。。");
        // 运行时异常：编译不报错，运行时才会报错，继承自 RuntimeException
        for (int i = 0; i <= arr.length; i++) {
            System.out.println(arr[i]); // ArrayIndexOutOfBoundsException
        }
        System.out.println("程序继续运行。。。");
    }
    public static void show() {
        //空指针异常
        String str = null;
        System.out.println(str);
        System.out.println(str.length()); // NullPointerException
    }
}
